#include<iostream>
#include<vector>
#include<string>
#include<memory>
using namespace std;
class StrBlobPtr{
public:
	StrBlobPtr():curr(0){}
	StrBlobPtr(StrBlob &a,size_t sz=0):wptr(a.data),curr(sz){}
	string& deref()const;
	StrBlobPtr& incr();
	size_t get_curr(){return curr;}
private:
	shared_ptr<vector<string>> check(size_t,const string&)const;
	weak_ptr<vector<string>> wptr;
	size_t curr;
};